The popularity of computers continues to grow. In fact, computers have become very important tools for many individuals and man y businesses throughout the world. One reason for such a proliferation in computer usage, is that computers can efficiently perform many tasks that heretofore were performed manually by humans with a pencil and paper. For example, adding numbers, writing papers, tracking inventory, tracking important dates, and sending mail, can be preformed more efficiently with the assistance of a computer.
However, each task requires a computer to execute at least one set of instructions. Accordingly, a significant amount of computer executable instructions are commercially available to the public. These executable instructions are referred to by many names including computer programs, computer code, program code, computer software, computer instructions, applications, or simply “code.” Typical computer programs are relatively complex and it is difficult to understand how code manipulates a processor of a computer during every step of a process. Often, millions of hours are spent creating and improving such programs and a typical computer program has thousands of lines of code.
Most computer programs have an initial release or publication. Later, when improvements are added to existing programs, a new version of the computer program is released. It is also rare for a new program to be developed from “scratch” as programmers that develop new programs often borrow code from textbooks, templates or from some previously developed code. A typical computer program will have numerous releases wherein each new release will provide an incremental improvement to the previously released version. New software generally must be compatible with previously released software; thus, large pieces of code in a software release are often borrowed from the previously released version of the software.
Often, when a computer program needs improvements, new programmers are assigned the task, but the new programmers are often unfamiliar with the intricacies of the existing program. Additionally, when minor revisions are required to existing code, novice programmers are often employed to make such revisions. One major challenge that programmers face is to understand how specific functions within the existing software occur and when and where these specific functions occur. It is nearly impossible for a programmer to improve or modify a program if the programmer cannot locate specific features of the code and understand how the code instructs the computer to perform. Further, knowing some history about the development of certain aspects of the code can help a programmer understand the current arrangement of the code in the computer program.
Computer programming tools typically allow programmers to add “comments” to lines of code during construction of the code wherein the comments can provide a “narration” of the code and log important details. Such a narration can make it easier for subsequent programmers to locate and understand features within the code. Generally, a programmer can add comments at a “source code” level, or integrate comments into the source code. Source code is a machine readable language level that can instruct a processor of a computer to execute specific functions.
As stated above, comments can provide data that explains something about a line of code, or about a block of code, and comments are often added by a programmer in an effort to make the code more understandable for subsequent programmers. For example, a comment can locate a start of a functional feature in the program, can explain the feature provided by lines of code, can explain why the feature was added and can locate an end to a section of code that provides the feature. When a programmer fixes a problem he or she may add additional comments regarding what was learned, how an improvement was made, why a line of code was added or modified and what problems were fixed by the added line(s) of code.
Like many other sciences, programming has its own technical language and “slang” often becomes accepted terminology as the language evolves for the particular science. Although comments can be written in “plain English” to “educate” subsequent programmers, many programmers write in less than perfect English and programmers often utilize technical jargon in the comments. Thus, comments are often non-uniform and hard to search with a text search, making sections of code hard to locate and hard to understand.
Typically, during the programming procedure, source code is displayed to a user by a programming tool and comments can be added adjacent to lines of code. Specific syntax in the displayed program can separate or delineate the comments from executable code. Generally, comments are intended to assist programmers in understanding something about the code and when a computer executes the code, the computer will ignore the comments that are integrated with the code.
Software development tools have been significantly improved in recent years and many development tools now provide what is called an integrated development environment or (IDE). The concept of an IDE combines many tools that historically were separated entities. For example, an IDE can include a “browser type” graphical user interface, editors, compilers, auto-correction tools, and other very useful tools that can provide a single multifunctional software development tool. Some popular IDE's include Visual J++, VisualAge for C++ or Java, Java WorkShop, Visual Café, Elipse and IBM Websphere Studio Application Developer. Many programmers rely on the advantages provided by an IDE to develop code.
Although these commercially available IDEs provide many desirable features, IDEs still have many shortcomings. For example, IDEs and other development tools only provide limited management features for the voluminous, disorganized comments often found within source code. A “hodgepodge” of unusable programmer comments often occurs in code that has undergone many years of development from many different programmers and many different programming groups. Numerous authors with individual styles can cause serious non-uniformity in the comments because many programmers utilize their own abbreviations and jargon when making entries in the comments section. More specifically, lines of code that have been developed over the years and released numerous times often contain so many comments that it is hard for a programmer to locate the desired code.
Some development tools provide a simple text search tool to perform textual searches of the comments, but these tools are often useless when the comments include jargon and have a tenuous connection to the English language. In such a situation, creating search terms to initiate the text search is not an intuitive process. In fact in this situation, most programmers view the comments as useless clutter. Thus, in many circumstances the available tools cannot locate desired materials, and programmers often cannot make effective use of the comments in a computer program. Yet in mature code, comments can fill up a significant amount of space on a display, “obscuring” the actual computer executable code.
A programmer may have a specific question or want to find a specific function among the thousands of lines of code and thousands of comments. However, when comments lack any logical order, or are not coherent, the comments will have limited usefulness. These comments, however, may still be useful and salvageable if a proper comment data management tool were available to manage such data.